package com.qs.rest;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.cxf.jaxrs.ext.multipart.Attachment;

import com.qs.services.FeedService;
import com.qs.utils.HttpStatusCodes;
import com.qs.utils.HttpStatusStrings;
import com.qs.valuesobjects.containers.ChannelListContainerVo;
import com.qs.valuesobjects.containers.FeedListContainerVo;
import com.qs.valuesobjects.containers.BaseContainerVo;
import com.qs.valuesobjects.containers.UserContainerVo;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
import com.wordnik.swagger.annotations.ApiParam;
import com.wordnik.swagger.annotations.ApiResponse;
import com.wordnik.swagger.annotations.ApiResponses;

@Api(value = "rest/services/public", description = "Public Operations")
public interface IPublicRestService {
	
	
	@GET
	@Path( "/feeds" )
	@Produces( MediaType.APPLICATION_JSON )
	@ApiOperation(value = "Get Public Feeds",response=FeedListContainerVo.class)
	@ApiResponses(value = 
					{ 	@ApiResponse(code = HttpStatusCodes.OK, message = HttpStatusStrings.OK),
						@ApiResponse(code = HttpStatusCodes.INVALID_REQUEST, message = HttpStatusStrings.INVALID_REQUEST),
						@ApiResponse(code = HttpStatusCodes.INTERNAL_SERVER_ERROR, message = HttpStatusStrings.INTERNAL_SERVER_ERROR),
					})
	public BaseContainerVo getFeeds(@Context HttpHeaders httpHeaders,
									@ApiParam(value="offset",required=true) @QueryParam("offset") String offset,
									@ApiParam(value="limit",required=true) @QueryParam("limit") String limit,
									@ApiParam(value="channelId",required=false) @QueryParam("channelId") String channelId);
	
	
	@GET
	@Path( "/channels" )
	@Produces( MediaType.APPLICATION_JSON )
	@ApiOperation(value = "Get All Channels",response=ChannelListContainerVo.class)
	@ApiResponses(value = 
					{ 	@ApiResponse(code = HttpStatusCodes.OK, message = HttpStatusStrings.OK),
						@ApiResponse(code = HttpStatusCodes.INVALID_REQUEST, message = HttpStatusStrings.INVALID_REQUEST),
						@ApiResponse(code = HttpStatusCodes.INTERNAL_SERVER_ERROR, message = HttpStatusStrings.INTERNAL_SERVER_ERROR),
					})
	public BaseContainerVo getAllChannels(@Context HttpHeaders httpHeaders);

	
	
}
